package com.sn.utils;

import com.sn.pojo.News;
import com.sn.pojo.NewsItem;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class NZYYUtils {
    //南京中医药大学爬取工具类
    //工具类只负责爬取内容,不负责插入数据库，即不会生成id
    private String uri = "http://xyw.njucm.edu.cn/2352/list"+page+".htm";
    private PoolingHttpClient httpClient = new PoolingHttpClient();
    private static int page=1;
    public List<News> getNews() {
        //使用工具类获取client连接池,获取client对象来请求网页
        String content = httpClient.doGetHtml(uri);
        System.out.println("是否进行了翻页?南药"+page);
        System.out.println("看一下地址 南药"+uri);
        page++;
        List<News>newsList=new ArrayList<>();
        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //首先获取南京中医药大学新闻的分类
        String category = doc.getElementsByClass("Column_Anchor").first().text();
        //经过分析 得知南京中医药大学的首页新闻是包裹在 <div id="wp_news_w2">
        //第一步先获取div标签集合
        Element div = doc.getElementById("wp_news_w2");
        //第二步 解析div标签里面的td标签 class=nlink
        Elements tds = div.getElementsByClass("nlink");
        for (Element td : tds) {
            //第三步 在td标签里面获取a标签
            Element a = td.getElementsByTag("a").first();
            //第四步 提取a标签里面的标题以及链接
            String title = a.text();//提取标题
            String href = a.attr("href");
            href="http://xyw.njucm.edu.cn"+href;//拼接链接
            News news=new News();
            news.setNHref(href);//设置标题
            news.setNTitle(title);//设置标题
            news.setSId(1);//设置学校id
            news.setNGetTime(Tools.getFormatDate(new Date()));//设置爬取时间
            news.setNCategory(category);//设置标题
            newsList.add(news);
        }

        return newsList;
    }



    public NewsItem getItem(String iUri){
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(iUri);

        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //经过分析，南京中医药的新闻详情页的新闻内容包裹在 <div class='Article_Content'> 下面p标签的text
        //第一步先获取div
        Elements article_content = doc.getElementsByClass("Article_Content");

        //第二步获取每个p标签的text,通过字符串拼接接起来
        List<String> list = article_content.eachText();
        StringBuffer sb=new StringBuffer();
        for (String s : list) {
            sb.append(s);
        }
        String values = sb.toString();
        //获取作者--> class="Article_Source"下的text
        String author = doc.getElementsByClass("Article_Source").first().text();//获取作者
        String date = doc.getElementsByClass("Article_PublishDate").first().text();//获取时间
        NewsItem newsItem=new NewsItem();
        newsItem.setNAuthor(author);//设置作者
        newsItem.setNValue(values);//设置内容
        newsItem.setNCreateTime(date);//设置发布时间
        return newsItem;
    }
}
